// 图片优先级配置
export const IMAGE_PRIORITY = {
  // 最高优先级 - 首屏关键图片
  CRITICAL: 1000,

  // 高优先级 - 重要业务图片
  HIGH: 500,

  // 中优先级 - 产品展示图片
  MEDIUM: 200,

  // 低优先级 - 辅助图片
  LOW: 50,

  // 最低优先级 - 装饰性图片
  DECORATIVE: 10
};

// 图片类型优先级映射
export const IMAGE_TYPE_PRIORITY = {
  // 导航和品牌相关
  logo: IMAGE_PRIORITY.CRITICAL,
  navigation: IMAGE_PRIORITY.CRITICAL,

  // 业务服务相关
  business: IMAGE_PRIORITY.HIGH,
  service: IMAGE_PRIORITY.HIGH,

  // 产品相关
  product: IMAGE_PRIORITY.MEDIUM,

  // 合作伙伴相关
  partner: IMAGE_PRIORITY.LOW,

  // 装饰性图片
  decorative: IMAGE_PRIORITY.DECORATIVE,
  background: IMAGE_PRIORITY.DECORATIVE
};

// 获取图片优先级
export function getImagePriority(imageType, customPriority = 0) {
  const basePriority = IMAGE_TYPE_PRIORITY[imageType] || IMAGE_PRIORITY.MEDIUM;
  return basePriority + customPriority;
}

// 优先级队列管理
export class PriorityQueue {
  constructor() {
    this.queue = [];
  }

  // 添加图片到队列
  add(imageData) {
    this.queue.push(imageData);
    this.sort();
  }

  // 按优先级排序
  sort() {
    this.queue.sort((a, b) => {
      if (a.priority !== b.priority) {
        return b.priority - a.priority; // 高优先级在前
      }
      return a.timestamp - b.timestamp; // 时间戳排序
    });
  }

  // 获取最高优先级的图片
  getHighestPriority(count = 3) {
    return this.queue.slice(0, count);
  }

  // 移除图片
  remove(imageElement) {
    const index = this.queue.findIndex(item => item.element === imageElement);
    if (index > -1) {
      this.queue.splice(index, 1);
    }
  }

  // 清空队列
  clear() {
    this.queue = [];
  }

  // 获取队列长度
  get length() {
    return this.queue.length;
  }
}

// 全局优先级队列实例
export const globalPriorityQueue = new PriorityQueue();
